home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 February: Tool Chest / Dev.CD Feb 99 TC.toast / What's New? / Development Kits / Mac OS USB v1.1f3 DDK / Examples / USBSampleStorageDriver / SampleStorageDriverAPI.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-12-14  |  3.0 KB  |  106 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SampleStorageDriverAPI.h
  3.  
  4.     Contains:    Sample Storage Class definitions used by the Storage Class UT Driver
  5.  
  6.     Version:    1.1
  7.  
  8.     Copyright:    © 1998 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11.  
  12. #ifndef __SAMPLESTORAGEDRIVERAPI__
  13. #define __SAMPLESTORAGEDRIVERAPI__
  14.  
  15. #include <MacTypes.h>
  16.  
  17. #define kDispatchTableVersion        0
  18. #define kRequestPending                1
  19.  
  20. // Return codes from the class driver
  21. #define kCommandBusyError            -10000
  22.  
  23. enum ControlSelectors
  24. {
  25.     kControlDisableRemoval =    0,
  26.     kControlEnableRemoval
  27. };
  28.  
  29. enum StatusSelectors
  30. {
  31.     kStatusConfiguration =        0,
  32.     kStatusDeviceStatus,
  33.     kStatusRemovalStatus
  34. };
  35.  
  36. enum driverConfigurationStatus
  37. {
  38.     kNotConfigured =            0,
  39.     kConfigureInProgress,
  40.     kConfigureComplete,
  41.     kConfigureFailed
  42. };
  43.  
  44.  
  45. #define kCDBSize                    12        // Per the USB Mass Storage Class spec.
  46.  
  47. typedef CALLBACK_API_C( void , StorageClassCompletionProcPtr )(void* storageClassPBPtr );
  48.  
  49.  
  50. struct StorageStatusPB {
  51.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  52.     UInt8                            deviceStatus[2];    // <- Two bytes of status
  53.     OSStatus                        status;                // <- Result of operation
  54. };
  55. typedef struct StorageStatusPB    StorageStatusPB;
  56. typedef StorageStatusPB *        StorageStatusPBPtr;
  57.  
  58.  
  59. struct StorageControlPB {
  60.     UInt32                            selector;            // -> Operation to perform
  61.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  62.     OSStatus                        status;                // <- Result of operation
  63. };
  64. typedef struct StorageControlPB    StorageControlPB;
  65. typedef StorageControlPB *        StorageControlPBPtr;
  66.  
  67.  
  68. struct StorageExecuteCommandPB {
  69.     UInt8                            cdb[kCDBSize];        // -> CDB to send to device
  70.     UInt32                            flags;                // -> Data transfer flags (See below)
  71.     Ptr                                userBuffer;            // -> Pointer to user buffer
  72.     UInt32                            expectedCount;        // -> Expected number of bytes to transfer
  73.     StorageClassCompletionProcPtr    completionProc;        // -> Completion routine
  74.     UInt32                            actualCount;        // <- Actual number of bytes transferred
  75.     OSStatus                        status;                // <- Result of operation
  76. };
  77. typedef struct StorageExecuteCommandPB    StorageExecuteCommandPB;
  78. typedef StorageExecuteCommandPB *        StorageExecuteCommandPBPtr;
  79.  
  80. // Data transfer flags for StorageExecuteCommandPB
  81. enum {
  82.     kStorageDataIn    =    0x0001,
  83.     kStorageDataOut =    0x0002,
  84.     kStorageNoData =    0x0004
  85. };
  86.  
  87. typedef CALLBACK_API_C( OSStatus , StorageInitializeProcPtr )(void);
  88.  
  89. typedef CALLBACK_API_C( OSStatus , StorageControlProcPtr )(UInt32 theControlSelector, void *theControlData);
  90.  
  91. typedef CALLBACK_API_C( OSStatus , StorageStatusProcPtr )(UInt32 theInfoSelector, void *theInfo);
  92.  
  93. typedef CALLBACK_API_C( OSStatus , StorageExecuteCommandProcPtr )(void* storageExecuteCommandPBPtr );
  94.  
  95.  
  96. struct StorageClassDispatchTable {
  97.     UInt32                            dispatchTableVersion;
  98.     StorageInitializeProcPtr         pStorageInitialize;
  99.     StorageControlProcPtr             pStorageControl;
  100.     StorageStatusProcPtr             pStorageStatus;
  101.     StorageExecuteCommandProcPtr    pStorageExecuteCmd;
  102. };
  103. typedef struct StorageClassDispatchTable    StorageClassDispatchTable;
  104. typedef StorageClassDispatchTable *            StorageClassDispatchTablePtr;
  105.  
  106. #endif /* __SAMPLESTORAGEDRIVERAPI__ */